package net.sahv.bdyz.controller.admin;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;

import net.sahv.bdyz.model.ShowSynchronization;
import net.sahv.bdyz.model.ShowSynchronizationPic;
import net.sahv.bdyz.service.PatternService;
import net.sahv.bdyz.service.ShowSynchronizationPicService;
import net.sahv.bdyz.service.ShowSynchronizationService;
import net.sahv.bdyz.util.PagingUtil;

/**
 * @author 作者 : 任凯伟
 * @date 创建时间：2016年8月9日 上午10:51:13
 * @version 1.0
 * @see 后台秀场同步管理
 */

@Controller("adminShowSynchronizationController")
@RequestMapping("admin/show")
public class ShowSynchronizationController {
	
	@Autowired
	private ShowSynchronizationService showService;
	@Autowired
	private ShowSynchronizationPicService showPicService;
	@Autowired
	private PatternService patternService;// 花型列表

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 上午10:54:31
	 * @version 1.0
	 * @see 跳转列表页
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping(value="/areaList",method=RequestMethod.GET)
	public String areaList() {
		return "admin/showSyn/areaList";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 上午11:48:18
	 * @version 1.0
	 * @see 秀场地区
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/areaList",method=RequestMethod.POST)
	public JSON areaList(PagingUtil pagingUtil, HttpServletRequest request, Model model) {
		String sortField = " order by SS_CREATE_TIME desc";
		String where = " where SS_IS_DELETE=0 and SS_PARENT_ID=0";
		Map<String, Object> param = new HashMap<String, Object>();

		param.put("start", pagingUtil.getiDisplayStart());
		param.put("length", pagingUtil.getiDisplayLength());
		param.put("where", where);
		param.put("sortField", sortField);

		List<ShowSynchronization> parentList = showService.findParentList(param);
		// 统计信息的总条数
		Integer totalCount = showService.getTotalCount(where);

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("aaData", parentList);
		// 查出来总共有多少条记录
		map.put("iTotalRecords", totalCount);
		map.put("iTotalDisplayRecords", totalCount);
		map.put("sEcho", pagingUtil.getsEcho());
		return (JSON) JSON.toJSON(map);
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 上午11:48:51
	 * @version 1.0
	 * @see 删除秀场
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/delete", method = RequestMethod.POST)
	public ApiResult delete(Integer[] id) {
		ApiResult result = new ApiResult();
		int flag = 0;
		Integer[] tmp = new Integer[id.length];// 临时数组
		int idx = 0;// 常量
		boolean isParent = false;
		if (id.length > 0) {
			for(int i:id){
				int count=0;
				ShowSynchronization ss = showService.selectById(i);
				if (ss != null && ss.getParentId() == 0) {
					isParent = true;
				}
				if (isParent) {
					count = showService.getChildList(i).size();
					if (count == 0) {
						tmp[idx] = i;
						idx++;
					}
				} else {
					count = patternService.getCountByShowId(i);
					if (count == 0) {
						tmp[idx] = i;
						idx++;
					}
				}
			}
			flag = showService.delete(tmp);
		}
		if (flag > 0) {

			result.msg.status = 0;
			if (isParent) {
				result.msg.desc = "删除成功！共删除" + flag + "条数据！其中" + (id.length - idx) + "条数据下尚存在秀场！";
			} else {
				result.msg.desc = "删除成功！共删除" + flag + "条数据！其中" + (id.length - idx) + "条数据下尚存在花型！";
			}
		} else if (flag == 0 && id.length == 1) {
			result.msg.status = 1;
			if (isParent) {
				result.msg.desc = "删除失败！该数据下尚存在秀场！";
			} else {
				result.msg.desc = "删除失败！该数据下尚存在花型！";
			}
		} else {
			result.msg.status = 1;
			result.msg.desc = "删除失败！";
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午2:10:17
	 * @version 1.0
	 * @see 添加秀场根路径
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping(value="/addArea",method=RequestMethod.GET)
	public String addArea(Model model) {
		return "admin/showSyn/addArea";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午2:41:06
	 * @version 1.0
	 * @see 验证名称唯一性
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value="/checkName",method=RequestMethod.POST)
	public JSON checkName(String param) {
		String info="";
		String status="";
		Map<String,Object>  map = new HashMap<String,Object>();
		if (param != null && param != "") {
			ShowSynchronization ss = showService.findByName(param);
			if (ss != null) {
				status="n";
				info="地区名称已存在！";
			}else{
				status="y";
				info="可以使用";
			}
		}else{
			status="n";
			info="请输入参数！";
		}
		map.put("status", status);
		map.put("info", info);
		return (JSON) JSON.toJSON(map);
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午2:24:46
	 * @version 1.0
	 * @see 添加地区秀场
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/addArea", method = RequestMethod.POST)
	public ApiResult addArea(ShowSynchronization ss) {
		ApiResult result = new ApiResult();
		ShowSynchronization exitsSs = showService.findByName(ss.getName());
		if (exitsSs != null) {
			result.msg.status = 1;
			result.msg.desc = "添加失败！";
		}
		ss.setCreateTime(new Date());
		ss.setIsDelete(0);
		ss.setParentId(0);
		int flag = showService.insert(ss);
		if (flag == 1) {
			result.msg.status = 0;
			result.msg.desc = "添加成功！";
		} else if (flag == 0) {
			result.msg.status = 1;
			result.msg.desc = "添加失败！";
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午2:54:36
	 * @version 1.0
	 * @see 跳转到修改页面
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping(value="/areaUpdate",method=RequestMethod.GET)
	public String areaUpdate(Integer id, Model model) {
		if (id != null) {
			ShowSynchronization ss = showService.selectById(id);
			model.addAttribute("ss", ss);
		}
		return "admin/showSyn/areaUpdate";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午3:04:39
	 * @version 1.0
	 * @see 修改时检查名称是否存在
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value="/checkUpName",method=RequestMethod.POST)
	public JSON checkUpName(Integer id, String param) {
		String info="";
		String status="";
		Map<String,Object>  map = new HashMap<String,Object>();
		if (id != null && param != null && param != "") {
			ShowSynchronization ss = showService.findByIdAndName(id, param);
			if (ss != null) {
				status="n";
				info="地区名称验证不通过！";
			}else{
				status="y";
				info="地区名称验证通过！";
			}
		}else{
			status="n";
			info="地区名称验证不通过！";
		}
		map.put("status", status);
		map.put("info", info);
		return (JSON) JSON.toJSON(map);
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午3:09:43
	 * @version 1.0
	 * @see 修改秀场地区
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/areaUpdate", method = RequestMethod.POST)
	public ApiResult areaUpdate(ShowSynchronization ss) {
		ApiResult result = new ApiResult();
		ShowSynchronization oldSs = showService.selectById(ss.getId());
		if (oldSs != null && ss.getName() != null && ss.getName() != "") {
			ShowSynchronization exitsSs = showService.findByIdAndName(ss.getId(), ss.getName());
			if (exitsSs != null) {
				result.msg.status = 1;
				result.msg.desc = "修改失败！";
			}
			oldSs.setName(ss.getName());
			oldSs.setEnName(ss.getEnName());
			int flag = showService.updateByPrimaryKey(oldSs);
			if (flag == 1) {
				result.msg.status = 0;
				result.msg.desc = "修改成功！";
			} else if (flag == 0) {
				result.msg.status = 1;
				result.msg.desc = "修改失败！";
			}
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午3:46:04
	 * @version 1.0
	 * @see 秀场管理
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping(value="/index",method=RequestMethod.GET)
	public String showIndex() {
		return "admin/showSyn/showList";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午3:52:27
	 * @version 1.0
	 * @see 秀场列表数据
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/list",method=RequestMethod.POST)
	public JSON getShowList(PagingUtil pagingUtil, HttpServletRequest request, Model model) {
		String showName = request.getParameter("showName");
		String sortField = " order by s.SS_CREATE_TIME desc";
		String where = " where s.SS_IS_DELETE=0 and s.SS_PARENT_ID!=0";
		Map<String, Object> param = new HashMap<String, Object>();
		if (showName != null && showName != "") {
			where += " and s.SS_NAME like '%" + showName + "%'";
		}
		param.put("start", pagingUtil.getiDisplayStart());
		param.put("length", pagingUtil.getiDisplayLength());
		param.put("where", where);
		param.put("sortField", sortField);

		List<Map<String, Object>> showList = showService.findShowList(param);
		// 统计信息的总条数
		Integer totalCount = showService.getTotalCount(where);

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("aaData", showList);
		// 查出来总共有多少条记录
		map.put("iTotalRecords", totalCount);
		map.put("iTotalDisplayRecords", totalCount);
		map.put("sEcho", pagingUtil.getsEcho());
		return (JSON) JSON.toJSON(map);
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午4:41:13
	 * @version 1.0
	 * @see 添加秀场
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping(value="/toAddPage",method=RequestMethod.GET)
	public String toAddShowPage(Model model) {
		List<ShowSynchronization> parentList = showService.findAllParent();
		model.addAttribute("pList", parentList);
		return "admin/showSyn/addShow";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午4:56:35
	 * @version 1.0
	 * @see 添加秀场
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/save", method = RequestMethod.POST)
	public ApiResult save(ShowSynchronization ss, String returnImgArray, HttpServletRequest request) {
		ApiResult result = new ApiResult();
		ss.setIsDelete(0);
		ss.setCreateTime(new Date());
		// 多图上传字符串分割
		String[] imgPaths = returnImgArray.split("\\|");
		int flag = showService.insertShow(ss, imgPaths);
		if (flag == 1) {
			result.msg.status = 0;
			result.msg.desc = "添加成功！";
		} else if (flag == 0) {
			result.msg.status = 1;
			result.msg.desc = "添加失败！";
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 下午5:42:05
	 * @version 1.0
	 * @see 修改秀场
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping(value="/showUpdate",method=RequestMethod.GET)
	public String showUpdate(Integer id, Model model) {
		if (id != null) {
			ShowSynchronization ss = showService.selectById(id);
			model.addAttribute("ss", ss);
			List<ShowSynchronizationPic> picList = showPicService.getShowPicListByShowId(id);
			// 多图列表字符串拼接
			if (picList != null && picList.size() > 0) {
				String returnImgArray = "";
				for (ShowSynchronizationPic sp : picList) {
					returnImgArray += "|" + sp.getImg();
				}
				model.addAttribute("returnImgArray", returnImgArray);
				model.addAttribute("picList", picList);
			} else {
				model.addAttribute("returnImgArray", "");
			}
		}
		List<ShowSynchronization> parentList = showService.findAllParent();
		model.addAttribute("pList", parentList);
		return "admin/showSyn/showUpdate";
	}

	@ResponseBody
	@RequestMapping(value = "/update", method = RequestMethod.POST)
	public ApiResult update(String returnImgArray, ShowSynchronization ss) {
		ApiResult result = new ApiResult();
		ShowSynchronization oldShow = showService.selectById(ss.getId());
		ss.setCreateTime(oldShow.getCreateTime());
		ss.setIsDelete(oldShow.getIsDelete());
		// 多图上传字符串分割
		String[] imgPaths = returnImgArray.split("\\|");
		int flag = showService.update(ss, imgPaths);
		if (flag == 1) {
			result.msg.status = 0;
			result.msg.desc = "修改成功！";
		} else if (flag == 0) {
			result.msg.status = 1;
			result.msg.desc = "修改失败！";
		}
		return result;
	}

}
 